package study;

import java.awt.geom.Line2D;
import java.util.LinkedList;
import java.util.List;

/**
 * @version 1.0
 * @since:
 * @ClassName:GenericTest
 * @author: Li Jiahui
 * @date: 2021-05-01 22:39
 */
public class GenericTest {
    public static void main(String[] args) {
        //1.声明二个List类型的集合进行测试
        List<Animal> lt1 = new LinkedList<>();
        List<Dog> lt2 = new LinkedList<>();
        //试图将lt2的数值赋值给lt1,也就是发生List<Dog>类型向List<Animal>类型的转换
        //lt1 = lt2;Error:类型之间不具备父子类关系
        System.out.println("-------------");
        //2。使用通配符作为泛型类型的公共父类
        List<?> lt3 = new LinkedList<>();
        //lt3 = lt1;
        lt3 = lt2;
        //3.向公共父类添加元素和获取元素
        // lt3.add(new Animal());
        //lt3.add(new Dog());
        lt3.get(0);//使用？号通配符，只支持元素的获取操作，全部当做Object类型使用
        //3.使用有限制的通配符进行使用
        List<? extends Animal> lt4 = new LinkedList<>();
        //不支持元素的添加操作
        //lt4.add(new Animal());
        //lt4.add(new Dog());
        Animal animal = lt4.get(0);
        System.out.println("-------------");
        List<? super Animal> lt5 = new LinkedList<>();
        lt5.add(new Animal());
        lt5.add(new Dog());
        //lt5.add(new Object());



    }
}
